package com.youlu.campus.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.youlu.campus.base.base.EntityBase;
import com.youlu.campus.entity.wechat.enums.WechatMerchantConfigVerifyEnum;
import lombok.Data;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import javax.validation.constraints.NotNull;

/**
 * 微信商户号配置信息
 */
@Data
@Document(collection = "wechat_merchant_config")
public class WechatMerchantConfig extends EntityBase {

    /**
     * 商户名称
     */
    @NotNull
    private String merchantName;

    /**
     * 商户id
     */
    @NotNull
    @Indexed
    private String merchantId;

    /**
     * 商户API证书的证书序列号
     */
    @Indexed
    private String serialNumber;

    /**
     * 平台证书序列号
     * TODO 未来可能会过期情况 如果过期失败只能观测。通过CertificateDownloader.jar 重新生成
     */
    @Indexed
    private String platformSerialNumber;

    /**
     * 平台证书地址
     */
    private String pathPlatformCertificate;

    /**
     * 私钥key路径
     */
    private String pathPrivateKey;

    /**
     * 公钥匙key路径
     */
    private String pathPublicKey;

    /**
     * TODO 之前用于 apiv3key 的存储，现在用 apiV3Key 存储
     * 废弃字段
     */
    private String desc;
    /**
     * cc
     */
    private String cc;
    /**
     * 描述
     */
    private String description;

    /**
     * 公司主体
     */
    private String company;

    /**
     * 支付通知，后期加上
     */
    private String notifyUrl;

    /**
     * 公钥id
     */
    private String publicKeyId;

    /**
     * apiV3Key
     */
    private String apiV3Key;


    /**
     * 验签模式 WechatMerchantConfigVerifyEnum
     */
    private String verifyMode = WechatMerchantConfigVerifyEnum.PLATFORM_CERTIFICATE.getValue();

    /**
     * 是否加密
     */
    private boolean encrypt = false;
}
